package com.yituo.mjworld.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于指定某接口对参数中的某一个字段进行规约检查!
 *
 * @author xq
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Rule {
  /**
   * 校验的数据类型默认为String类型
   *
   * @return
   */
  Class type() default String.class;

  /**
   * 长度
   *
   * @return
   */
  int length() default -1;

  /**
   * 是否必填
   *
   * @return
   */
  boolean required() default true;

  /**
   * 字段名
   *
   * @return
   */
  String name() default "";

  /**
   * 错误信息
   *
   * @return
   */
  String errorMsg() default "";

  /**
   * 最小值
   *
   * @return
   */
  String min() default "null";

  /**
   * 简的中文名
   *
   * @return
   */
  String name_zn() default "";

  /**
   * 最大值.
   * <p>
   * 请传入数字类型的字符串.
   * <p>
   * 当left有值
   *
   * @return
   */
  String max() default "null";

  /**
   * 默认值
   *
   * @return
   */
  String defaultValue() default "";

  /**
   * 用于标注表单上某个字段的值必须和当前用户的ID相等(admin除外!)
   * <p>
   * 默认为假
   *
   * @return
   */
  boolean onlySelf() default false;

  /**
   * 是否校验手机号码
   * @return
   */
  boolean mobile() default false;

}
